home *** CD-ROM | disk | FTP | other *** search
/ Amiga CD-Sensation: Golden Games / Amiga CD-Sensation - Ausgabe 2 - Golden Games (1996)(GTI - Schatztruhe)(DE)[!].iso / Brain Activity / Rubik / source / makecube.c < prev    next >
C/C++ Source or Header  |  1990-08-11  |  10KB  |  228 lines

  1. /*    makecube.c  ...for rubik.c    */
  2.  
  3. /*    started 23-Dec-89    */
  4.  
  5. extern struct points point;
  6. extern struct points start;
  7. extern unsigned short size;
  8.  
  9. extern struct one_square square[56];    /*    54 on cube + 2 inter-planes  */
  10.  
  11. void init_squares()        /*    this defines the cubes geometry called ONCE    */
  12.     {
  13.     int face,i;
  14.     
  15.     for (face=0; face<2; face++)    /*    small squares in xy plane    */
  16.         {
  17.         (square[9*face+0]).corner[0] = &(point.xyz [0] [0] [face*5]);
  18.         (square[9*face+0]).corner[1] = &(point.xyz [1] [0] [face*5]);
  19.         (square[9*face+0]).corner[2] = &(point.xyz [1] [1] [face*5]);
  20.         (square[9*face+0]).corner[3] = &(point.xyz [0] [1] [face*5]);
  21.  
  22.         (square[9*face+1]).corner[0] = &(point.xyz [2] [0] [face*5]);
  23.         (square[9*face+1]).corner[1] = &(point.xyz [3] [0] [face*5]);
  24.         (square[9*face+1]).corner[2] = &(point.xyz [3] [1] [face*5]);
  25.         (square[9*face+1]).corner[3] = &(point.xyz [2] [1] [face*5]);
  26.  
  27.         (square[9*face+2]).corner[0] = &(point.xyz [4] [0] [face*5]);
  28.         (square[9*face+2]).corner[1] = &(point.xyz [5] [0] [face*5]);
  29.         (square[9*face+2]).corner[2] = &(point.xyz [5] [1] [face*5]);
  30.         (square[9*face+2]).corner[3] = &(point.xyz [4] [1] [face*5]);
  31.  
  32.         (square[9*face+3]).corner[0] = &(point.xyz [0] [2] [face*5]);
  33.         (square[9*face+3]).corner[1] = &(point.xyz [1] [2] [face*5]);
  34.         (square[9*face+3]).corner[2] = &(point.xyz [1] [3] [face*5]);
  35.         (square[9*face+3]).corner[3] = &(point.xyz [0] [3] [face*5]);
  36.  
  37.         (square[9*face+4]).corner[0] = &(point.xyz [2] [2] [face*5]);
  38.         (square[9*face+4]).corner[1] = &(point.xyz [3] [2] [face*5]);
  39.         (square[9*face+4]).corner[2] = &(point.xyz [3] [3] [face*5]);
  40.         (square[9*face+4]).corner[3] = &(point.xyz [2] [3] [face*5]);
  41.  
  42.         (square[9*face+5]).corner[0] = &(point.xyz [4] [2] [face*5]);
  43.         (square[9*face+5]).corner[1] = &(point.xyz [5] [2] [face*5]);
  44.         (square[9*face+5]).corner[2] = &(point.xyz [5] [3] [face*5]);
  45.         (square[9*face+5]).corner[3] = &(point.xyz [4] [3] [face*5]);
  46.  
  47.         (square[9*face+6]).corner[0] = &(point.xyz [0] [4] [face*5]);
  48.         (square[9*face+6]).corner[1] = &(point.xyz [1] [4] [face*5]);
  49.         (square[9*face+6]).corner[2] = &(point.xyz [1] [5] [face*5]);
  50.         (square[9*face+6]).corner[3] = &(point.xyz [0] [5] [face*5]);
  51.  
  52.         (square[9*face+7]).corner[0] = &(point.xyz [2] [4] [face*5]);
  53.         (square[9*face+7]).corner[1] = &(point.xyz [3] [4] [face*5]);
  54.         (square[9*face+7]).corner[2] = &(point.xyz [3] [5] [face*5]);
  55.         (square[9*face+7]).corner[3] = &(point.xyz [2] [5] [face*5]);
  56.  
  57.         (square[9*face+8]).corner[0] = &(point.xyz [4] [4] [face*5]);
  58.         (square[9*face+8]).corner[1] = &(point.xyz [5] [4] [face*5]);
  59.         (square[9*face+8]).corner[2] = &(point.xyz [5] [5] [face*5]);
  60.         (square[9*face+8]).corner[3] = &(point.xyz [4] [5] [face*5]);
  61.         }
  62.  
  63.     for (face=2; face<4; face++)    /*    small squares in xz plane    */
  64.         {
  65.         (square[9*face+0]).corner[0] = &(point.xyz [0] [(face-2)*5] [0]);
  66.         (square[9*face+0]).corner[1] = &(point.xyz [1] [(face-2)*5] [0]);
  67.         (square[9*face+0]).corner[2] = &(point.xyz [1] [(face-2)*5] [1]);
  68.         (square[9*face+0]).corner[3] = &(point.xyz [0] [(face-2)*5] [1]);
  69.  
  70.         (square[9*face+1]).corner[0] = &(point.xyz [2] [(face-2)*5] [0]);
  71.         (square[9*face+1]).corner[1] = &(point.xyz [3] [(face-2)*5] [0]);
  72.         (square[9*face+1]).corner[2] = &(point.xyz [3] [(face-2)*5] [1]);
  73.         (square[9*face+1]).corner[3] = &(point.xyz [2] [(face-2)*5] [1]);
  74.  
  75.         (square[9*face+2]).corner[0] = &(point.xyz [4] [(face-2)*5] [0]);
  76.         (square[9*face+2]).corner[1] = &(point.xyz [5] [(face-2)*5] [0]);
  77.         (square[9*face+2]).corner[2] = &(point.xyz [5] [(face-2)*5] [1]);
  78.         (square[9*face+2]).corner[3] = &(point.xyz [4] [(face-2)*5] [1]);
  79.  
  80.         (square[9*face+3]).corner[0] = &(point.xyz [0] [(face-2)*5] [2]);
  81.         (square[9*face+3]).corner[1] = &(point.xyz [1] [(face-2)*5] [2]);
  82.         (square[9*face+3]).corner[2] = &(point.xyz [1] [(face-2)*5] [3]);
  83.         (square[9*face+3]).corner[3] = &(point.xyz [0] [(face-2)*5] [3]);
  84.  
  85.         (square[9*face+4]).corner[0] = &(point.xyz [2] [(face-2)*5] [2]);
  86.         (square[9*face+4]).corner[1] = &(point.xyz [3] [(face-2)*5] [2]);
  87.         (square[9*face+4]).corner[2] = &(point.xyz [3] [(face-2)*5] [3]);
  88.         (square[9*face+4]).corner[3] = &(point.xyz [2] [(face-2)*5] [3]);
  89.  
  90.         (square[9*face+5]).corner[0] = &(point.xyz [4] [(face-2)*5] [2]);
  91.         (square[9*face+5]).corner[1] = &(point.xyz [5] [(face-2)*5] [2]);
  92.         (square[9*face+5]).corner[2] = &(point.xyz [5] [(face-2)*5] [3]);
  93.         (square[9*face+5]).corner[3] = &(point.xyz [4] [(face-2)*5] [3]);
  94.  
  95.         (square[9*face+6]).corner[0] = &(point.xyz [0] [(face-2)*5] [4]);
  96.         (square[9*face+6]).corner[1] = &(point.xyz [1] [(face-2)*5] [4]);
  97.         (square[9*face+6]).corner[2] = &(point.xyz [1] [(face-2)*5] [5]);
  98.         (square[9*face+6]).corner[3] = &(point.xyz [0] [(face-2)*5] [5]);
  99.  
  100.         (square[9*face+7]).corner[0] = &(point.xyz [2] [(face-2)*5] [4]);
  101.         (square[9*face+7]).corner[1] = &(point.xyz [3] [(face-2)*5] [4]);
  102.         (square[9*face+7]).corner[2] = &(point.xyz [3] [(face-2)*5] [5]);
  103.         (square[9*face+7]).corner[3] = &(point.xyz [2] [(face-2)*5] [5]);
  104.  
  105.         (square[9*face+8]).corner[0] = &(point.xyz [4] [(face-2)*5] [4]);
  106.         (square[9*face+8]).corner[1] = &(point.xyz [5] [(face-2)*5] [4]);
  107.         (square[9*face+8]).corner[2] = &(point.xyz [5] [(face-2)*5] [5]);
  108.         (square[9*face+8]).corner[3] = &(point.xyz [4] [(face-2)*5] [5]);
  109.         }
  110.  
  111.     for (face=4; face<6; face++)    /*    small squares in yz plane    */
  112.         {
  113.         (square[9*face+0]).corner[0] = &(point.xyz [(face-4)*5] [0] [0]);
  114.         (square[9*face+0]).corner[1] = &(point.xyz [(face-4)*5] [0] [1]);
  115.         (square[9*face+0]).corner[2] = &(point.xyz [(face-4)*5] [1] [1]);
  116.         (square[9*face+0]).corner[3] = &(point.xyz [(face-4)*5] [1] [0]);
  117.                                                              
  118.         (square[9*face+1]).corner[0] = &(point.xyz [(face-4)*5] [0] [2]);
  119.         (square[9*face+1]).corner[1] = &(point.xyz [(face-4)*5] [0] [3]);
  120.         (square[9*face+1]).corner[2] = &(point.xyz [(face-4)*5] [1] [3]);
  121.         (square[9*face+1]).corner[3] = &(point.xyz [(face-4)*5] [1] [2]);
  122.                                                              
  123.         (square[9*face+2]).corner[0] = &(point.xyz [(face-4)*5] [0] [4]);
  124.         (square[9*face+2]).corner[1] = &(point.xyz [(face-4)*5] [0] [5]);
  125.         (square[9*face+2]).corner[2] = &(point.xyz [(face-4)*5] [1] [5]);
  126.         (square[9*face+2]).corner[3] = &(point.xyz [(face-4)*5] [1] [4]);
  127.                                                              
  128.         (square[9*face+3]).corner[0] = &(point.xyz [(face-4)*5] [2] [0]);
  129.         (square[9*face+3]).corner[1] = &(point.xyz [(face-4)*5] [2] [1]);
  130.         (square[9*face+3]).corner[2] = &(point.xyz [(face-4)*5] [3] [1]);
  131.         (square[9*face+3]).corner[3] = &(point.xyz [(face-4)*5] [3] [0]);
  132.                                                              
  133.         (square[9*face+4]).corner[0] = &(point.xyz [(face-4)*5] [2] [2]);
  134.         (square[9*face+4]).corner[1] = &(point.xyz [(face-4)*5] [2] [3]);
  135.         (square[9*face+4]).corner[2] = &(point.xyz [(face-4)*5] [3] [3]);
  136.         (square[9*face+4]).corner[3] = &(point.xyz [(face-4)*5] [3] [2]);
  137.                                                              
  138.         (square[9*face+5]).corner[0] = &(point.xyz [(face-4)*5] [2] [4]);
  139.         (square[9*face+5]).corner[1] = &(point.xyz [(face-4)*5] [2] [5]);
  140.         (square[9*face+5]).corner[2] = &(point.xyz [(face-4)*5] [3] [5]);
  141.         (square[9*face+5]).corner[3] = &(point.xyz [(face-4)*5] [3] [4]);
  142.                                                              
  143.         (square[9*face+6]).corner[0] = &(point.xyz [(face-4)*5] [4] [0]);
  144.         (square[9*face+6]).corner[1] = &(point.xyz [(face-4)*5] [4] [1]);
  145.         (square[9*face+6]).corner[2] = &(point.xyz [(face-4)*5] [5] [1]);
  146.         (square[9*face+6]).corner[3] = &(point.xyz [(face-4)*5] [5] [0]);
  147.                                                              
  148.         (square[9*face+7]).corner[0] = &(point.xyz [(face-4)*5] [4] [2]);
  149.         (square[9*face+7]).corner[1] = &(point.xyz [(face-4)*5] [4] [3]);
  150.         (square[9*face+7]).corner[2] = &(point.xyz [(face-4)*5] [5] [3]);
  151.         (square[9*face+7]).corner[3] = &(point.xyz [(face-4)*5] [5] [2]);
  152.                                                              
  153.         (square[9*face+8]).corner[0] = &(point.xyz [(face-4)*5] [4] [4]);
  154.         (square[9*face+8]).corner[1] = &(point.xyz [(face-4)*5] [4] [5]);
  155.         (square[9*face+8]).corner[2] = &(point.xyz [(face-4)*5] [5] [5]);
  156.         (square[9*face+8]).corner[3] = &(point.xyz [(face-4)*5] [5] [4]);
  157.         }
  158.  
  159.     for (i=0; i<54; i++)
  160.         (square[i]).colour = 1+ i / 9;
  161.  
  162.     for (i=54; i<56; i++)
  163.         (square[i]).colour = 0;
  164.     }                                             
  165.  
  166. void init_points()    /*    generate cube centered on (0,0,0)    */
  167.     {
  168.     int i,j,k;
  169.     
  170.     for (i=0; i<6; i++)
  171.         for (j=0; j<6; j++)
  172.             for (k=0; k<6; k++)
  173.                 if (i==0 || i==5 || j==0 || j==5 || k==0 || k==5)
  174.                     {
  175.                     switch (i)
  176.                         {
  177.                         case 0:
  178.                             (start.xyz [i] [j] [k]).x = size * -3;
  179.                             break;
  180.                         case 1:
  181.                         case 2:
  182.                             (start.xyz [i] [j] [k]).x = -size;
  183.                             break;
  184.                         case 3:
  185.                         case 4:
  186.                             (start.xyz [i] [j] [k]).x = size;
  187.                             break;
  188.                         case 5:
  189.                             (start.xyz [i] [j] [k]).x = size * 3;
  190.                             break;
  191.                         }
  192.                     switch (j)
  193.                         {
  194.                         case 0:
  195.                             (start.xyz [i] [j] [k]).y = size * -3;
  196.                             break;
  197.                         case 1:
  198.                         case 2:
  199.                             (start.xyz [i] [j] [k]).y = -size;
  200.                             break;
  201.                         case 3:
  202.                         case 4:
  203.                             (start.xyz [i] [j] [k]).y = size;
  204.                             break;
  205.                         case 5:
  206.                             (start.xyz [i] [j] [k]).y = size * 3;
  207.                             break;
  208.                         }
  209.                     switch (k)
  210.                         {
  211.                         case 0:
  212.                             (start.xyz [i] [j] [k]).z = size * -3;
  213.                             break;
  214.                         case 1:
  215.                         case 2:
  216.                             (start.xyz [i] [j] [k]).z = -size;
  217.                             break;
  218.                         case 3:
  219.                         case 4:
  220.                             (start.xyz [i] [j] [k]).z = size;
  221.                             break;
  222.                         case 5:
  223.                             (start.xyz [i] [j] [k]).z = size * 3;
  224.                             break;
  225.                         }
  226.                     }
  227.     }
  228.